package cn.cyh.queue_service.service;

import cn.cyh.queue_service.model.dto.PageRequest;
import cn.cyh.queue_service.model.dto.PageResult;
import cn.cyh.queue_service.model.entity.Notice;
import cn.cyh.queue_service.model.vo.NoticeVO;

import java.util.List;

/**
 * 通知公告服务接口
 */
public interface NoticeService {
    
    /**
     * 创建通知公告
     * 
     * @param notice 通知公告实体
     * @return 通知公告ID
     */
    Long createNotice(Notice notice);
    
    /**
     * 更新通知公告
     * 
     * @param id 通知公告ID
     * @param notice 通知公告实体
     * @return 是否更新成功
     */
    boolean updateNotice(Long id, Notice notice);
    
    /**
     * 删除通知公告
     * 
     * @param id 通知公告ID
     * @return 是否删除成功
     */
    boolean deleteNotice(Long id);
    
    /**
     * 根据ID获取通知公告
     * 
     * @param id 通知公告ID
     * @return 通知公告视图对象
     */
    NoticeVO getNoticeById(Long id);
    
    /**
     * 分页查询通知公告列表
     * 
     * @param pageRequest 分页请求
     * @return 分页结果
     */
    PageResult<NoticeVO> getNoticeList(PageRequest pageRequest);
    
    /**
     * 获取当前有效的通知公告列表
     * 
     * @return 通知公告视图对象列表
     */
    List<NoticeVO> getActiveNotices();
    
    /**
     * 获取首页展示的通知公告列表
     * 
     * @return 通知公告视图对象列表
     */
    List<NoticeVO> getHomePageNotices();
    
    /**
     * 更新通知公告状态
     * 
     * @param id 通知公告ID
     * @param status 状态(0-不显示, 1-显示)
     * @return 是否更新成功
     */
    boolean updateStatus(Long id, Integer status);
} 